package com.liy.cloud.common.pw.utils;

/**
 * @author libs
 * @date 2019/1/9 15:52:42
 * @description 现金种类枚举
 */
public enum  MoneyType {

    /*
     * 现金种类用3位数字字符表示，第一位表示现金种类（0：硬币，1：纸币），第二位和第三位表示编号
     * 枚举值名称：开头（硬币开头为：YB，纸币开头为：ZB） + 币值 + 币值单位（毛：M，元：Y）
     */

    YB5M("001", 0.5, 50L, "5毛硬币", ""),
    YB1Y("002", 1.0, 100L, "1元硬币", "YB000010"),
    ZB1Y("101", 1.0, 100L, "1元纸币", "ZB000010"),
    ZB2Y("102", 2.0, 200L, "2元纸币", ""),
    ZB5Y("103", 5.0, 500L, "5元纸币", "ZB000050"),
    ZB10Y("104", 10.0, 1000L, "10元纸币", "ZB000100"),
    ZB20Y("105", 20.0, 2000L, "20元纸币", "ZB000200"),
    ZB50Y("106", 50.0, 5000L, "50元纸币", "ZB000500"),
    ZB100Y("107", 100.0, 100000L, "100元纸币", "ZB001000"),
    ;

    /*
     * 编码
     */
    private String code;

    /*
     * 数值（元）
     */
    private Double valueYuan;

    /*
     * 数值（分）
     */
    private Long valueFen;
    /*
     * 含义
     */
    private String desc;

    /*
     * 物品ID
     */
    private String itemId;

    MoneyType(String code, Double valueYuan, Long valueFen, String desc, String itemId) {
        this.code = code;
        this.valueYuan = valueYuan;
        this.valueFen = valueFen;
        this.desc = desc;
        this.itemId = itemId;
    }

    public String getCode() {
        return code;
    }

    public Double getValueYuan() {
        return valueYuan;
    }

    public Long getValueFen() {
        return valueFen;
    }

    public String getDesc() {
        return desc;
    }

    public String getItemId() {
        return itemId;
    }

    public static MoneyType getByCode(String code){
        for (MoneyType moneyType: MoneyType.values()) {
            if (moneyType.code.equals(code)){
                return moneyType;
            }
        }
        return null;
    }
}
